/*
    pinia特点（改变）：  支持ts（底层使用ts写的）
                        去除了mutations
                        actions支持同步和异步
                        没有模块化（每一个store都是独立的，可以自由导入\相互导入）
                        无需手动添加store
*/

import { defineStore } from 'pinia'
import {Names} from './store-name'


// hooks，要导出，     第一个参数是一个id,ts中唯一值,所以这里定义一个枚举， js中可以直接写这个store的名字 如：'useTestStore'
export const useTestStore = defineStore(Names.TEST, {
    state: () => {   // 这个需要是一个函数形式，需要有返回值， 类似于Options Api的data
        return {
            current: 1,
            name: 'zhangsan'
        }
    },
    // computed 修饰的一些值
    getters: {

    },
    // methods  可以做同步，也可以做异步， 提交state
    actions: {
        // setCurrent() {                   // 不能写箭头函数
        //     this.current = 500           // this指向useTestStore实例
        // }
        setCurrent(num: number) {                   // 不能写箭头函数
            this.current = num           // this指向useTestStore实例
        }
    }
})

// 第二个个store: base             写在一个文件里
export const useStore = defineStore(Names.BASE, {
    state: () => {   // 这个需要是一个函数形式，需要有返回值， 类似于Options Api的data
        return {
            baseCurrent: 1,
            baseName: 'zhangsan'
        }
    },
    // computed 
    getters: {

    },
    // methods  
    actions: {
        // setCurrent() {                 
        //     this.current = 500          
        // }
        setCurrent(num: number) {                 
            this.baseCurrent = num           
        }
    }
})